//
//  ViewController.swift
//  Handling Timeouts in Asynchronous Connections
//
//  Created by Vandad Nahavandipoor on 7/9/14.
//  Copyright (c) 2014 Pixolity Ltd. All rights reserved.
//
//  These example codes are written for O'Reilly's iOS 8 Swift Programming Cookbook
//  If you use these solutions in your apps, you can give attribution to
//  Vandad Nahavandipoor for his work. Feel free to visit my blog
//  at http://vandadnp.wordpress.com for daily tips and tricks in Swift
//  and Objective-C and various other programming languages.
//  
//  You can purchase "iOS 8 Swift Programming Cookbook" from
//  the following URL:
//  http://shop.oreilly.com/product/0636920034254.do
//
//  If you have any questions, you can contact me directly
//  at vandad.np@gmail.com
//  Similarly, if you find an error in these sample codes, simply
//  report them to O'Reilly at the following URL:
//  http://www.oreilly.com/catalog/errata.csp?isbn=0636920034254

import UIKit

class ViewController: UIViewController {
                            
  override func viewDidLoad() {
    super.viewDidLoad()
    
    /* We have a 15 second timeout for our connection */
    let timeout = 15.0

    /* You can choose your own URL here */
    let urlAsString = "http://www.apple.com"
    let url = NSURL(string: urlAsString)
    
    /* Set the timeout on our request here */
    let urlRequest = NSURLRequest(URL: url!,
      cachePolicy: .ReloadIgnoringLocalAndRemoteCacheData,
      timeoutInterval: timeout)
    
    let queue = NSOperationQueue()
    
    NSURLConnection.sendAsynchronousRequest(urlRequest,
      queue: queue,
      completionHandler: {response, data, error in
        
        guard let data = data where data.length > 0 else{
          print("Error happened")
          return
        }
        
        let html = NSString(data: data, encoding: NSUTF8StringEncoding)
        print("html = \(html)")
        
      }
    )
    
  }

}

